public class Dome3 {
    public static void main(String[] args) {
        int []array={1,2,3};

        try{
            System.out.println("before");
            array=null;
            System.out.println(array[100]);

            System.out.println("after");
        }catch(ArrayIndexOutOfBoundsException e){
            System.out.println("这个是数组越界异常");
            e.printStackTrace();
        } catch(NullPointerException e){
            System.out.println("这个是空指针异常");
            e.printStackTrace();
        }
        System.out.println("after try catch");
    }


    //如果多个异常的处理方式是完全相同的，也可以使用||

    //如果异常之间具有父子关系，一定是子类异常在前catch，父类异常在后catch，否则语法错误
    //

    //可以一次捕获（catch）所有的异常，但是不推荐
    //使用Exception是多有异常类的父类，因此可以使用这个类型捕捉所有的异常
    //

    //一定要子类在前，父类后面
    //不然的话，父类在前，给你全部捕捉完了
    //你子类捕捉个屁
    //finally

    //在写程序时候，有些特定的代码，不论程序是狗发生异常，都需要执行，比如打开程序中打开的资源：网络连接，数据库链接、io流，在执行程序异常或者退出的时候，必须要对资源
    //进行回收，另外，因为异常会引发程序的跳转，导致有些语句执行不到，所以finally就是用来解决这个问题的
    //

    //既然finally和try-catch-finally后的代码，都会执行，那么为什么还要有finally呢？
    //需求：是西安getData方法，内部输入一个整形数字，然后将该数字返回，在main方法中打印

}